import axios from 'axios'
import router from '@/router'
import Element from 'element-ui'

// axios.defaults.baseURL = 'http://localhost:9090'
axios.defaults.baseURL = 'http://yongyan0624.top:9090'

const request = axios.create({
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8',
  },
})

request.interceptors.request.use((config) => {
  config.headers['Authorization'] = localStorage.getItem('token')
  return config
})

request.interceptors.response.use(
  (success) => {
    // 业务逻辑错误
    /**
     * 404: 资源不存在
     * 401：用户未登录
     * 403: 权限不够
     * 500:服务器错误
     */
    let statusErrorCode = ['401', '400', '404', '403', '500']
    if (success.status && success.status == 200 && success.data.code) {
      if (statusErrorCode.includes(success.data.code.toString())) {
        Notify({ type: 'danger', message: success.data.msg })
      } else if (success.data.msg && success.data.code !== 200) {
        Notify({ type: 'success', message: success.data.msg })
      }
    }

    // tryHideFullScreenLoading()
    return success
  },
  (error) => {
    // 有错误响应
    if (error.response) {
      // 有响应码
      if (error.response.status) {
        // 分析响应码
        if (504 == error.response.status || 500 == error.response.status) {
          Element.Message.error('服务器被吃了')
        } else if (error.response.status == 403) {
          Element.Message.error('权限不足o(╯□╰)o')
        } else if (error.response.status == 401) {
          Element.Message.error('用户未登录o(╯□╰)o')
          router.replace('/login')
        } else {
          if (error.response.msg) {
            Element.Message(
              error.response.data.msg
                ? error.response.data.msg
                : '未知错误！o(╯□╰)o'
            )
          } else {
            Element.Message.error('操作失败o(╯□╰)o')
          }
        }
      } else {
        Element.Message.error('未知错误！o(╯□╰)o')
      }
    } else {
      Element.Message.error('未知错误！o(╯□╰)o')
    }

    // tryHideFullScreenLoading()
    return Promise.reject(error)
  }
)

// request.interceptors.response.use(response => {
//     let res = response.data;

//     if (res.code === 200) {
//         return response;
//     } else {
//         Element.Message.error(res.msg ? res.msg : '系统异常');
//         return Promise.reject(response.data.msg);
//     }
// }, error => {
//     if (error.response.data) {
//         error.message = error.response.data.msg;
//     }

//     if (error.response.status === 401) {
//         router.push("/login");
//     }

//     Element.Message.error(error.message, {duration: 3000});
//     return Promise.reject(error);
// })

export default request
